//1.导入数据库的约束
const cartModel = require('../db/cart')
const userModel = require('../db/user')
module.exports = {
    addcart(req,res){
        //接收数据
        let{userid,menuid,num,speandkind,mode}  = req.body
        //添加数据
        /*因为speandkinds接收时是选择小份15个￥16.00=====大份16个￥16.00 这样类似的数据 
        */
        var s = speandkind.indexOf('￥')
        let price = speandkind.slice(s).replace('￥','')
        //判断数据库中是否有该添加的数据
        cartModel.findOne({userid,menuid,speandkind}, (err,docs) =>{
            
            if(err){
                throw new Error (err)
            }
            //对数据进行判断 
            //如果有数据证明 证明数据库中有查询到的数据 证明之前添加过了 所以就不用再一次添加了 直接对查询到的数据的数量值 进行修改就可以了
            if(docs){
                //因为_id是唯一的 查到一一对应的_id 就让num增加
                cartModel.updateOne({_id:docs._id},{$inc:{num:num}} , (err, docs) =>{
                    if(err){
                        throw new Error(err)
                    }
                    res.json({
                        error_code:0,
                        msg:"添加购物车成功",
                        date:docs
                    })
                })
            } 
            //else 证明没有数据 没有数据证明没有点过这个产品 
            // 所以给数据库添加信息
            else{
                // menuModel.findOne({
                //     menuid: docs.menuid
                // }, (err, docs) => {
                //     if (err) {
                //         throw new Error(err)
                //     }
                //     if (docs) {
                //         cartModel.insertMany({
                //             userid,
                //             menuid,
                //             speandkind,
                //             num,
                //             //新增
                //             price,
                //             menuid,
                //         }, (err, docs) => {
                //             if (err) {
                //                 throw new Error(err)
                //             }
                //             res.json({
                //                 error_code: 0,
                //                 msg: "购物车添加成功"
                //             })
                //         })

                //     }
                // })
                
                cartModel.insertMany({
                    userid,
                    menuid,
                    speandkind,
                    num,
                    mode,
                    price
                } ,(err , docs) =>{
                    if(err){
                        throw new Error (err)
                    }
                    res.json({
                        error_code:0,
                        msg:"购物车添加成功",
                        date:docs
                    })
                })
            }
        })
    },
    // getAllCarts(req,res){
    //     cartModel.find({},{__v:0}, (err,docs) =>{
    //         if(err){
    //             throw new Error (err)
    //         }
    //         res.json({
    //             err_code:0,
    //             msg:'查询成功',
    //             //docs为查询到的数据 ---- 数组
    //             data:docs
    //         })
    //     })
    // }
     getAllCarts(req,res){
        //获取用户id
        let{userid} = req.params
        //查询数据库数据
        cartModel.find({userid},{__v:0},(err,docs) =>{
            if(err){
                throw new Error (err)
            }
            //判断是否有数据 ---- find 返回值是数组
            // if(docs.length)[
                 
            // ]
            res.json({
                err_code:0,
    //             msg:'查询成功',
    //             //docs为查询到的数据 ---- 数组
    //             data:docs
            })
        })
     }
}


/* 
    思路:在执行cart时,我们会接收到
    let{userid,menuid,num,speandkind,mode}  = req.body
    这五个数据
*/